package org.soderiakelvy.model.service;

import java.util.List;
import org.soderiakelvy.model.domain.ComercializacionMesVencidoVO;
import org.soderiakelvy.model.domain.ComercializacionPackVO;
import org.soderiakelvy.model.domain.DesProdTipoCliVO;
import org.soderiakelvy.model.domain.FrioCalorVO;
import org.soderiakelvy.model.domain.SucursalFrioCalorVO;
import org.soderiakelvy.model.domain.SucursalPackVO;
import org.soderiakelvy.model.domain.SucursalProductoVO;
import org.soderiakelvy.model.domain.SucursalVO;
import org.soderiakelvy.model.domain.SujetoVO;

public interface SucursalServicio {
	//TODO todo los metodos para hacer el CRUD
    String insertSucursal(SucursalVO sucursal);
    String insertSucursalPrincipal(SucursalVO sucursal, SujetoVO sujeto);
    String updateSucursal(SucursalVO sucursal);
    String deleteSucursal(SucursalVO sucursal);
    SucursalVO getSucursalVO(SucursalVO sucursal);
    SucursalVO getSucursalBySujetoYNumeroSucursal(SujetoVO sujeto, Long numeroSucursal);
    Boolean existeNombreSucursal(String nombre);
    
    
    void insertVisitaVO(SucursalVO sucursal, String[]dias);
    String insertComercializacionMesVencidoVO(ComercializacionMesVencidoVO comercializacionMesVencido);
    String updateComercializacionMesVencidoVO(ComercializacionMesVencidoVO comercializacionMesVencido);
    String deleteComercializacionMesVencidoVO(ComercializacionMesVencidoVO comercializacionMesVencido);
    List<ComercializacionMesVencidoVO> getProductosComercializadosAMesVencido(SucursalVO sucursal);
    
    String insertComercializcionPackVO(ComercializacionPackVO comercializacionPack);
    String updateComercializcionPackVO(ComercializacionPackVO comercializacionPack);
    String deleteComercializcionPackVO(ComercializacionPackVO comercializacionPack);
    List<ComercializacionPackVO> getComercializacionesPackBySucursal(SucursalVO sucursal);
     
    String insertSucursalProductoVO(SucursalProductoVO sucursalProducto);
    String updateSucursalProductoVO(SucursalProductoVO sucursalProducto);
    String deleteSucursalProductoVO(SucursalProductoVO sucursalProducto);
    SucursalProductoVO getSucursalProductoById (long sucursalProductoId);
    List<SucursalProductoVO> getSucursalProductoBySucursal (SucursalVO sucursal);
    
    List<SucursalProductoVO> getSucursalesProductos();
    
    String insertSucursalPackVO(SucursalPackVO sucursalPack);
    String updateSucursalPackVO(SucursalPackVO sucursalPack);
    String deleteSucursalPackVO(SucursalPackVO sucursalPack);
    SucursalPackVO getSucursalPackById (long sucursalPackId);
    List<SucursalPackVO> getSucursalesPacks();
    
    String insertSucursalFrioCalorVO(SucursalFrioCalorVO sucursalFrioCalor);
    String updateSucursalFrioCalorVO(SucursalFrioCalorVO sucursalFrioCalor);
    String deleteSucursalFrioCalorVO(SucursalFrioCalorVO sucursalFrioCalor);
    SucursalFrioCalorVO getSucursalFrioCalorById (long sucursalFrioCalorId);
    List<SucursalFrioCalorVO> getSucursalesFrioCalor();
    List<SucursalFrioCalorVO> getSucursalFrioCalorBySucursal (SucursalVO sucursal);
    
    String assignProductosSucursal(SucursalVO s,DesProdTipoCliVO[] productosSeleccionados);
    String modificarProductoSucursal(SucursalVO s,DesProdTipoCliVO[] productosSeleccionados);
    String assignEquiposSucursal(SucursalVO s, FrioCalorVO[] equiposSeleccionados);
    String assignEquiposSucursal2(SucursalVO s, List<SucursalFrioCalorVO> equiposSeleccionados,String tipoComercializacion,long comercializacionId);
    
    //TODO todo los metodos para listar
    List<SucursalVO> getSucursalesByTipoSujeto(String tipoSujeto);    
    List<SucursalVO> getSucursalesFromSujeto(SujetoVO sujeto);
    List<SucursalVO> getSucursalesBySucursal(SucursalVO sucursal);
    List<SucursalProductoVO> getProductosPorSucursal(SucursalVO sucursal);
    
    //TODO otros metodos
    int getUltimoNumeroSucursal(SujetoVO sujeto);

}